'use strict'
/*
 * @Description: VueConfig 配置
 * @version: 【2022-4-11】
 * @Author: 周子尧
 * @Date: 2022-4-11 10:35:50
 * @LastEditors: 周子尧
 * @LastEditTime: 2022-04-11 10:38:18
 */

const webpack = require('webpack')
const path = require('path')

function resolve(dir) {
  return path.join(__dirname, dir)
}

module.exports = {
  runtimeCompiler: true,
  // 基本路径
  publicPath: '/',
  // 输出文件目录
  outputDir: 'dist',

  productionSourceMap: false,

  devServer: {
    hot: true,
    // 设置主机地址
    host: '0.0.0.0',
    // 设置默认端口
    port: 8080,
    open: true,
    disableHostCheck: true,
    watchOptions: {
      poll: false
    }, // 项目实行热更
    overlay: {
      warnings: false,
      errors: true
    }, // 让浏览器 overlay 同时显示警告和错误
    proxy: {
      '/service/mock': {
        target: 'https://www.fastmock.site/', // 'http://10.75.93.200:18084/', // 'http://192.168.11.91:8480', // 'http://192.168.1.103:8084',
        ws: false, // 如果要代理 websockets，配置这个参数
        changeOrigin: true, // 是否跨域
        pathRewrite: {
          '^/service/mock': '/mock/08eb97521362ac2238dabde483cb6f13/familysign'
        }
      },
      '/service': {
        // 目标 API 地址
        target: 'http://192.168.10.45:31101', // 外网环境'http://61.177.141.230:8077/home-doctor/front', // 研发环境 'http://192.168.10.45:31101', //  // 测试环境 'http://192.168.8.156:31101', //  无锡卫计委 'http://10.75.93.200:18084',
        ws: false, // 如果要代理 websockets，配置这个参数
        changeOrigin: true, // 是否跨域
        pathRewrite: {
          // '^/service': ''
          '^/service': '/service'
        }
      }
    }
  },
  // 第三方插件配置
  pluginOptions: {
    // ...
  },
  configureWebpack: {
    plugins: [
      // dayjs只保留中文语言资源
      new webpack.ContextReplacementPlugin(/dayjs[/\\]locale$/, /zh-cn/),
      new webpack.optimize.MinChunkSizePlugin({
        minChunkSize: 100000 // 通过合并小于 minChunkSize 大小的 chunk，将 chunk 体积保持在指定大小限制以上
      })
    ],
    module: {
      rules: [
        // 可在package.json 配置顶层 sideEffects: false
        {
          test: /\.(vue|js|jsx)$/,
          loader: 'eslint-loader',
          exclude: /node_modules/,
          enforce: 'pre' // 'post'
        }
      ]
    }
  },

  chainWebpack: config => {
    // 修复HMR(热更新)失效
    config.resolve.symlinks(true)

    // set svg-sprite-loader
    config.module
      .rule('svg')
      .exclude.add(resolve('src/icons'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()
  }
}
